home *** CD-ROM | disk | FTP | other *** search
- /* $VER: ShowComment 1.03 (21.5.95)© Felix C. Coronado
- */
- OPTIONS RESULTS
-
- /*If you are low on memory, you might want to make this smaller, but it
- should stay in the range of 3 - 65535*/
- BlockSize=65535
-
- NL='0A'x
- LUP='1B'x||'M'
- PARSE ARG FullFileName
- SAY '1B5B316D'x||'ShowComment 1.03 - Copyright (c) 1995 by Felix C. Coronado'||'1B5B306D'x||NL
- IF FullFileName='' THEN DO
- SAY 'No file was selected'
- EXIT
- END
- IF LEFT(FullFileName,1)='"'& RIGHT(FullFileName,1)='"' THEN FullFileName=SUBSTR(FullFileName,2,LENGTH(FullFileName)-2)
- IF ~EXISTS(FullFileName) THEN DO
- SAY "Could not find '"||FullFileName||"'"
- EXIT
- END
- IF OPEN(File,FullFileName,R) THEN DO
- FileType=ReadCh(File,10)
- IF LEFT(FileType,6)~='GIF87a' & LEFT(FileType,6)~='GIF89a' & (LEFT(FileType,4)~='FFD8FFE0'x | RIGHT(FileType,4)~='JFIF') THEN DO
- SAY "'"||FullFileName||"' Not a JPEG or GIF file"
- EXIT
- END
- Comment=''
- SAY "Searching for comments in '"||FullFileName||"'..."||NL||,
- "Ctrl-d to stop"
- IF LEFT(FileType,4)='FFD8FFE0'x & RIGHT(FileType,4)='JFIF' THEN DO
- SIGNAL ON BREAK_D
- BlockNum=0
- SearchVar=''
- ComNum=0
- StartPos=SEEK(File,10,'C')
- DO WHILE ~EOF(File)
- BlockNum=BlockNum+1
- SearchVar=RIGHT(SearchVar,1)||READCH(File,BlockSize-1)
- IF INDEX(SearchVar,'FFFE'x)~=0 THEN DO
- ComNum=ComNum+1
- ComLengthPos=StartPos+(BlockNum-1)*(BlockSize-1)+INDEX(SearchVar,'FFFE'x)
- CALL SEEK(File,ComLengthPos,'B')
- ComLength=C2D(READCH(File,2))-2
- Comment=Comment||NL||,
- NL||,
- '1B5B316D'x||'Comment '||ComNum||':'||'1B5B306D'x||NL||,
- STRIP(COMPRESS(READCH(File,ComLength),'0D'x),'B','0A'x)
- BlockNum=0
- SearchVar=''
- StartPos=SEEK(File,0,'C')
- END
- END
- SIGNAL OFF BREAK_D
- END
- IF LEFT(FileType,6)='GIF89a' THEN DO
- SIGNAL ON BREAK_D
- BlockNum=0
- SearchVar=''
- ComNum=0
- StartPos=SEEK(File,6,'B')
- DO WHILE ~EOF(File)
- BlockNum=BlockNum+1
- SearchVar=RIGHT(SearchVar,2)||READCH(File,BlockSize-2)
- IF INDEX(SearchVar,'0021FE'x)~=0 THEN DO
- ComNum=ComNum+1
- ComLengthPos=StartPos+(BlockNum-1)*(BlockSize-2)+INDEX(SearchVar,'0021FE'x)
- CALL SEEK(File,ComLengthPos,'B')
- ComLength=C2D(READCH(File,1))
- Comment=Comment||NL||,
- NL||,
- '1B5B316D'x||'Comment '||ComNum||':'||'1B5B306D'x||NL||,
- STRIP(COMPRESS(READCH(File,ComLength),'0D'x),'L','0A'x)
- ComLength=C2D(READCH(File,1))
- DO WHILE ComLength~=0 & ~EOF(File)
- Comment=Comment||COMPRESS(READCH(File,ComLength),'0D'x)
- ComLength=C2D(READCH(File,1))
- END
- Comment=STRIP(Comment,'T','0A'x)
- BlockNum=0
- SearchVar=''
- StartPos=SEEK(File,-1,'C')
- END
- END
- SIGNAL OFF BREAK_D
- END
- SAY LUP||'Finished. '
- END
- ELSE DO
- SAY "Error opening '"||FullFileName||"'"
- EXIT
- END
-
- BREAK_D:
- SearchVar=''
- CALL CLOSE(File)
- IF Comment~='' THEN SAY LUP||Comment
- ELSE SAY NL||,
- '1B5B316D'x||'No Comment'||'1B5B306D'x
-